// frontend/src/router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '../store/user' // P5 新增: 导入 Pinia store
import { ElMessage } from 'element-plus' // P5 新增: 导入 ElMessage 用于提示

// 导入 P4 创建的页面
import Home from '../views/Home.vue'
import MovieList from '../views/MovieList.vue'

const routes = [
  // P4 的页面
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/movies',
    name: 'MovieList',
    component: MovieList
  },

  // P5 的页面 (P4 已定义, P5 来实现)
  {
    path: '/movie/:id', // 带参数的路由 (满足 3.7)
    name: 'MovieDetail',
    // 路由懒加载
    component: () => import('../views/MovieDetail.vue') 
  },
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/Login.vue')
  },
  {
    path: '/register',
    name: 'Register',
    component: () => import('../views/Register.vue')
  },
  {
    path: '/profile',
    name: 'Profile',
    component: () => import('../views/UserProfile.vue'),
    meta: { requiresAuth: true } // P5 修改: 需要登录
  },
  {
    path: '/orders',
    name: 'Orders',
    component: () => import('../views/MyOrders.vue'),
    meta: { requiresAuth: true } // P5 修改: 需要登录
  },
  {
    path: '/admin',
    name: 'AdminPanel',
    component: () => import('../views/AdminPanel.vue'),
    meta: { requiresAuth: true, requiresAdmin: true } // 需要管理员权限
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

// P5 添加: 全局前置守卫
router.beforeEach((to, from, next) => {
  // P5 注意: 必须在守卫 *内部* 获取 store 实例
  const userStore = useUserStore()

  const requiresAuth = to.meta.requiresAuth
  const requiresAdmin = to.meta.requiresAdmin
  const isLoggedIn = userStore.isLoggedIn
  const isAdmin = userStore.userInfo && userStore.userInfo.username === 'admin' // 简单的管理员检查

  if (requiresAuth && !isLoggedIn) {
    // 1. 需要登录 且 未登录 -> 跳转到登录页
    ElMessage.warning('请先登录后再访问')
    next({ name: 'Login', query: { redirect: to.fullPath } })
  } else if (requiresAdmin && !isAdmin) {
    // 2. 需要管理员权限 且 不是管理员 -> 拒绝访问
    ElMessage.error('您没有管理员权限')
    next({ name: 'Home' })
  } else if ((to.name === 'Login' || to.name === 'Register') && isLoggedIn) {
    // 3. 已登录 且 访问的是 登录/注册页 -> 跳转到首页
    next({ name: 'Home' })
  } else {
    // 4. 其他情况 -> 放行
    next()
  }
})

export default router